package leetcode.hot100;

@SuppressWarnings("all")
public class _136_只出现一次的数字_异或运算 {

    // 给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次
    // 找出那个只出现了一次的元素
    // 要求不使用额外的空间，要求线性复杂度
    public int singleNumber(int[] nums) {
        // 根据异或运算的特点，相同为0，不同为1
        // 任何数与0异或都是本身
        int mark = 0;
        for (int num : nums) {
            mark ^= num;
        }
        // 相同的数经过异或后全部为0了，最后的就是只出现一次的那个数
        return mark;
    }
}
